import { createParamDecorator, ExecutionContext } from '@nestjs/common';
import * as crypto from 'crypto';

// 装饰器实现
export const RandomId = createParamDecorator(
  (data: string, ctx: ExecutionContext) => {
    // 默认长度为 10，或者从参数中读取长度
    const length = data ? parseInt(data, 10) : 10;
    // 生成随机数作为 ID
    const randomId = generateRandomId(length);
    // 返回随机数 ID
    return randomId;
  },
);

// 生成随机数的函数
function generateRandomId(length: number): string {
  return crypto.randomBytes(length).toString('hex');
}
